package com.ftg.learn.chapter07;

import javax.swing.*;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;

/**
 * @author kangjx
 * @date  2022/12/28
 */
public class String03 {

    public static void main(String[] args) {
        //一个字符  2个字节  8 位
        String s1 ="abc";
        String s2 = "中国";

        System.out.println(s1.length() +"字符数量");
        System.out.println(s2.length() +"字符数量");

        //编码问题 ？
//        字符编码（英语：Character encoding）也称字集码，是把字符集中的字符编码为指定集合中某一对象（例如：比特模式、自然数序列、8位组或者电脉冲），以便文本在计算机中存储和通过通信网络的传递。
        //就是计算机在现实生活当中的信息与计算机加密以后的通倣传递方式
//        1.ASCII码 英文字符和二进制关系所制定的编码规范
//        2 Unicode符号集  Unicode其实是符号集（世界上所有符号的符号集）
//        3 UTF-8  万国码  特点：变长的编码方式。可使用1~4个字节表示符号，根据不同符号变化字节长度  （最广泛）
//        4 GBK/GB2312/GB18030  中国汉字
        System.out.println(s1.getBytes(StandardCharsets.UTF_8).length+"字符串编码问题 ？ utf-8 字节数量");

        //一个汉字在GBK编码情况下，占三个字节
        System.out.println(s2.getBytes(StandardCharsets.UTF_8).length+"字符串编码问题 ？ utf-8 字节数量");

        //一个汉字在GBK编码情况下，占两个字节
        System.out.println(s2.getBytes(Charset.forName("GBK")).length+"字符串编码问题 ？ GBk 字节数量");

        System.out.println("abc".charAt(1));
        "abc".indexOf("ab");
//        [start,end)
        System.out.println("abcdef".substring(3));
        System.out.println("abcdef".substring(3,4));
    }

}
